用java实现K-means算法,k-means聚类算法原理

1、从包含多个数据点的数据集D中随机取k个点,作为k个簇的各自的中心。

2、分别计算剩下的点到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇。

   两个点之间的相异度大小采用欧氏距离公式衡量,对于两个点T0(x1,y2)和T1(x2,y2),

   T0和T1之间的欧氏距离为

       d = sqrt((x1-x2)^2+(y1-y2)^2)

  欧氏距离越小,说明相异度越小

 

3、根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有点各自维度的算术平均数。

4、将D中全部点按照新的中心重新聚类。

5、重复第4步,直到聚类结果不再变化。

6、将结果输出。

 

举例说明,假设包含9个点数据D如下(见simple_k-means.txt),从D中随机取k个元素,

作为k个簇的各自的中心, 假设选k=2, 即将如下的9个点聚类成两个类(cluster)。

1  1

2  1

1  2

2  2

3  3

8  8

8  9

9  8

9  9

 

1.      假设选C0(1  1)和C1(2  1)前两个点作为两个类的簇心。

2.     分别计算剩下的点到k个簇中心的相异度,将这些元素分别划归到相

异度最低的簇。结果为:

C0 :1 1

C0: 的点为:1.0,2.0

C1:  2 1

C1:的点为:2.0, 2.0

C1:的点为:3.0, 3.0

C1:的点为:8.0, 8.0

C1:的点为:8.0, 9.0

C1:的点为:9.0, 8.0

C1:的点为:9.0, 9.0

 

3.     根据2的聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所

有元素各自维度的算术平均数。

C0 新的簇心为:1.0,1.5

C1新的簇心为:5.857142857142857,  5.714285714285714

4.将D中全部元素按照新的中心重新聚类。

    第2次迭代

    C0:的点为:1.0, 1.0

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值